#ifndef CAMERA_H
#define CAMERA_H

class Camera{
public:
	Camera() { Init();}
	~Camera(){}

	void Init();
	void Update();
	void Reset();

	//Get Camera Position
	float GetX();
	float GetY();
	float GetZ();

	float GetYaw();

	//Rotate Camera Motions
	void RotateYaw(float angle); //horizontally
	void RotatePitch(float angle); //vertically

private:
	const static float INCR;
	const static float ROTATION_SPEED;

	float x,y,z; //position of camera (eye)
	float lx,ly,lz; //angles of camera (center)
	float lookx, looky, lookz; //look at position
	
	float ratio;
	float deltaAngle; // additional angle change when dragging

	float yaw, pitch; // Various rotation angles
	float strafe_lx, strafe_lz; // Always 90 degree to direction vector
};

#endif